#ifndef UTILS_MOCK_POINTER_H
#define UTILS_MOCK_POINTER_H

#include "utils/cxx-include.hpp"

/**
 * \file
 * \ingroup logging
 * Declaration of cas::TimePrinter, cas::NodePrinter function pointer.
 */

namespace cas
{
    /**
     * Function signature for features requiring a time formatter,
     * such as logging or ShowProgress.
     *
     * A TimePrinter should write the current simulation time
     * (Simulator::Now()) on the designated output stream.
     *
     * \param [in,out] os The output stream to print on.
     */
    typedef void (*TimePrinter)(std::ostream &os);

    /**
     * Default Time printer.
     *
     * \param [in,out] os The output stream to print on.
     */
    void DefaultTimePrinter(std::ostream &os);

    /**
     * Function signature for prepending the node id
     * to a log message.
     *
     * \param [in,out] os The output stream to print on.
     */
    typedef void (*NodePrinter)(std::ostream &os);

    /**
     * \ingroup logging
     * Default node id printer implementation.
     *
     * \param [in,out] os The output stream to print the node id on.
     */
    void DefaultNodePrinter(std::ostream &os);
} // namespace cas

#endif /* UTILS_MOCK_POINTER_H */
